public class code1 {
    // 跳跃游戏
    public boolean canJump(int[] nums) {
        // 这道提的思路是，从后向前，针对当前下标中元素的值来判断
        // 当前位置的元素是否有能力能够直接跳到后面元素的距离
        // 定义一个 flag 元素，标记数组中后面位置的长度
        int flag = nums.length - 1;
        // 进行 for 循环，向前遍历数组信息
        // 因为要和后一个元素进行比较，这里需要从倒数第二个数字的位置开始判断
        for(int i = nums.length - 2; i >= 0; i--) {
            // 如果 i 位置的值 大于等于 当前 flag 标记的位置 减去 i 这里的位置
            // 这就表明是可以通过跳跃转移过来的
            if(nums[i] >= flag - i) {
                // 更新 flag 指向新的下标位置
                flag = i;
            }
        }
        // 最终，只要 flag 能够跳转到 0 的位置上，此时也就表明整个数组是可以跳跃到最后一个位置上的
        return flag == 0?true:false;
    }
}
